package com.jerry.basic.thread;

public class HelloThreadSynchronizedMethodRun implements Runnable {

	/*
	 * 【同步方法】
	 * synchronized 方法返回类型 方法名（参数列表）{
	 * // 其他代码
	 * }
	 * 注：当多个线程共享一个资源的时候需要进行同步，但是过多的同步可能导致死锁。
	 */
	 public void run() {
	        for (int i = 0; i < 10; ++i) {
	            sale();
	        }
	    }
	 
	    public synchronized void sale() {
	        if (count > 0) {
	            try {
	                Thread.sleep(1000);
	            } catch (InterruptedException e) {
	                e.printStackTrace();
	            }
	            System.out.println(count--);
	        }
	    }
	 
	    public static void main(String[] args) {
	    	HelloThreadSynchronizedMethodRun he = new HelloThreadSynchronizedMethodRun();
	        Thread h1 = new Thread(he);
	        Thread h2 = new Thread(he);
	        Thread h3 = new Thread(he);
	        h1.start();
	        h2.start();
	        h3.start();
	    }
	 
	    private int count = 5;

}
